Typically, applications, such as Java applications, are deployed by first securing physical resources (such as gathering servers and group them into a cluster), and then performing deployment of the application to these physical resources. The hardware definition (i.e., the configuration of the physical resources) is static. As such, this technique does not allow for much flexibility when, e.g., the deployed applications require more computing power or less computing power. Such static definitions lead to poor hardware utilization optimization and added cost in terms of machines amortization and electric power consumption. Additionally, deployment is typically application server dependent. This means that switching from one application server (such as the Oracle Glassfish Server), to a different application server (such as Oracle WebLogic server), typically requires a new configuration, followed by a redeployment. These are the general areas that embodiments of the invention are intended to address.